const util = require('../../utils/util')

Page({
  data: {
    // 商品表单
    productForm: {
      name: '',
      description: '',
      price: '',
      category: '',
      condition: 'likeNew',
      images: [],
      tradeType: 'direct', // direct: 直接出售, auction: 拍卖
      startPrice: '', // 起拍价
      endTime: '' // 竞拍截止时间
    },
    
    // 商品列表
    products: [
      { id: 1, name: 'Java编程思想', price: 35, category: 'books', condition: 'likeNew' },
      { id: 2, name: 'MacBook Pro', price: 4800, category: 'electronics', condition: 'good' },
      { id: 3, name: '山地自行车', price: 280, category: 'daily', condition: 'likeNew' }
    ],
    
    // 分类列表
    categories: [
      { name: '教材书籍', value: 'books' },
      { name: '电子产品', value: 'electronics' },
      { name: '生活用品', value: 'daily' },
      { name: '运动器材', value: 'sports' },
      { name: '服装鞋帽', value: 'clothing' }
    ],
    
    // 状态列表
    conditions: [
      { name: '全新', value: 'new' },
      { name: '九成新', value: 'likeNew' },
      { name: '八成新', value: 'good' }
    ],
    
    // 价格区间列表
    priceRanges: [
      { name: '全部价格', min: 0, max: 999999 },
      { name: '0-100元', min: 0, max: 100 },
      { name: '100-500元', min: 100, max: 500 },
      { name: '500元以上', min: 500, max: 999999 }
    ],
    
    // 交易方式列表
    tradeTypes: [
      { name: '直接出售', value: 'direct' },
      { name: '拍卖', value: 'auction' }
    ],
    
    // 搜索相关
    searchKeyword: '',
    searchCategory: '',
    searchCategoryIndex: -1,
    priceRange: '',
    priceRangeIndex: -1,
    
    // UI状态
    categoryIndex: -1,
    conditionIndex: 1,
    tradeTypeIndex: 0, // 默认直接购买
    tempImages: [],
    endTimeArray: [],
    endTimeIndex: [0, 0, 0]
  },

  onLoad() {
    // 检查登录状态
    util.checkLoginStatus();
    
    // 加载商品列表
    this.loadProductList();
    
    // 初始化日期选择器数据
    this.initEndTimePicker();
  },
  
  onShow() {
    // 更新tabBar状态 - 没有对应的tab，不需要设置selected
    if (typeof this.getTabBar === 'function') {
      this.getTabBar().setData({
        selected: -1
      });
    }
  },

  // 返回首页
  goToHome() {
    wx.switchTab({
      url: '/pages/index/index'
    });
  },
  
  // 输入商品名称
  inputName(e) {
    this.setData({
      'productForm.name': e.detail.value
    });
  },
  
  // 输入商品描述
  inputDescription(e) {
    this.setData({
      'productForm.description': e.detail.value
    });
  },
  
  // 输入商品价格
  inputPrice(e) {
    this.setData({
      'productForm.price': e.detail.value
    });
  },
  
  // 选择商品分类
  bindCategoryChange(e) {
    const index = e.detail.value;
    const category = this.data.categories[index].value;
    
    this.setData({
      categoryIndex: index,
      'productForm.category': category
    });
  },
  
  // 选择商品状态
  bindConditionChange(e) {
    const index = e.detail.value;
    const condition = this.data.conditions[index].value;
    
    this.setData({
      conditionIndex: index,
      'productForm.condition': condition
    });
  },
  
  // 选择交易方式
  bindTradeTypeChange(e) {
    const index = e.detail.value;
    const tradeType = this.data.tradeTypes[index].value;
    
    this.setData({
      tradeTypeIndex: index,
      'productForm.tradeType': tradeType
    });
  },
  
  // 输入起拍价
  inputStartPrice(e) {
    this.setData({
      'productForm.startPrice': e.detail.value
    });
  },
  
  // 选择竞拍截止时间
  bindEndTimeChange(e) {
    const value = e.detail.value;
    const days = this.data.endTimeArray[0][value[0]];
    const hours = this.data.endTimeArray[1][value[1]];
    const minutes = this.data.endTimeArray[2][value[2]];
    
    const endTimeStr = `${days} ${hours}:${minutes}`;
    
    this.setData({
      endTimeIndex: value,
      'productForm.endTime': endTimeStr
    });
  },
  
  // 多列选择器列变化
  bindEndTimeColumnChange(e) {
    const data = {
      endTimeArray: this.data.endTimeArray,
      endTimeIndex: this.data.endTimeIndex
    };
    
    data.endTimeIndex[e.detail.column] = e.detail.value;
    
    this.setData(data);
  },
  
  // 选择图片
  chooseImage() {
    wx.chooseImage({
      count: 9 - this.data.tempImages.length,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        // 合并已有图片和新选择的图片
        const tempImages = this.data.tempImages.concat(res.tempFilePaths);
        
        this.setData({
          tempImages: tempImages
        });
      }
    });
  },
  
  // 预览图片
  previewImage(e) {
    const current = e.currentTarget.dataset.src;
    
    wx.previewImage({
      current: current,
      urls: this.data.tempImages
    });
  },
  
  // 删除图片
  removeImage(e) {
    const index = e.currentTarget.dataset.index;
    let tempImages = this.data.tempImages;
    
    tempImages.splice(index, 1);
    
    this.setData({
      tempImages: tempImages
    });
  },
  
  // 发布商品
  publishProduct() {
    const { name, description, price, category, condition, tradeType, startPrice, endTime } = this.data.productForm;
    
    // 简单验证
    if (!name) {
      util.showToast('请输入商品名称');
      return;
    }
    
    if (!description) {
      util.showToast('请输入商品描述');
      return;
    }
    
    if (price <= 0) {
      util.showToast('请输入有效的商品价格');
      return;
    }
    
    if (!category) {
      util.showToast('请选择商品分类');
      return;
    }
    
    // 拍卖模式下的额外验证
    if (tradeType === 'auction') {
      if (!startPrice || parseFloat(startPrice) <= 0) {
        util.showToast('请输入有效的起拍价');
        return;
      }
      
      if (!endTime) {
        util.showToast('请选择竞拍截止时间');
        return;
      }
    }
    
    if (this.data.tempImages.length === 0) {
      util.showToast('请至少上传一张商品图片');
      return;
    }
    
    // 模拟提交
    util.showLoading('发布中...');
    
    // 保存发布记录
    this.savePublishedProduct({
      name: name,
      description: description,
      price: price,
      category: category,
      condition: condition,
      image: this.data.tempImages[0], // 使用第一张图片作为主图
      tradeType: tradeType,
      startPrice: startPrice,
      endTime: endTime
    });
    
    setTimeout(() => {
      util.hideLoading();
      util.showToast('商品发布成功', 'success');
      
      // 清空表单
      this.setData({
        'productForm.name': '',
        'productForm.description': '',
        'productForm.price': '',
        'productForm.category': '',
        'productForm.startPrice': '',
        'productForm.endTime': '',
        categoryIndex: -1,
        tempImages: []
      });
    }, 1500);
  },
  
  // 保存已发布商品记录
  savePublishedProduct(product) {
    try {
      // 获取现有发布记录
      let publishedProducts = wx.getStorageSync('publishedProducts') || [];
      
      // 添加新发布商品
      const newProduct = {
        id: Date.now(), // 使用时间戳作为唯一ID
        name: product.name,
        price: product.price,
        status: '已发布',
        time: util.formatDate(new Date()),
        image: product.image,
        tradeType: product.tradeType,
        description: product.description,
        category: product.category,
        condition: product.condition
      };
      
      // 如果是拍卖商品，添加拍卖相关信息
      if (product.tradeType === 'auction') {
        newProduct.startPrice = product.startPrice;
        newProduct.endTime = product.endTime;
        
        // 计算截止时间对象，用于交易页面显示剩余时间
        const endTimeObj = this.parseEndTime(product.endTime);
        if (endTimeObj) {
          newProduct.endTimeObj = endTimeObj;
        }
      }
      
      // 将新发布商品添加到列表
      publishedProducts.unshift(newProduct);
      
      // 存储到本地
      wx.setStorageSync('publishedProducts', publishedProducts);
    } catch (e) {
      console.error('保存发布商品记录失败', e);
    }
  },
  
  // 解析结束时间字符串为日期对象
  parseEndTime(endTimeStr) {
    if (!endTimeStr) return null;
    
    try {
      // 解析时间字符串，例如 "3月15日 14:30"
      const regex = /(\d+)月(\d+)日\s+(\d+):(\d+)/;
      const match = endTimeStr.match(regex);
      
      if (match) {
        const month = parseInt(match[1]) - 1; // 月份从0开始
        const day = parseInt(match[2]);
        const hour = parseInt(match[3]);
        const minute = parseInt(match[4]);
        
        const currentDate = new Date();
        const year = currentDate.getFullYear();
        
        return new Date(year, month, day, hour, minute);
      }
      
      return null;
    } catch (e) {
      console.error('解析时间错误', e);
      return null;
    }
  },
  
  // 搜索相关
  inputSearchKeyword(e) {
    this.setData({
      searchKeyword: e.detail.value
    });
  },
  
  // 选择搜索分类
  bindSearchCategoryChange(e) {
    const index = e.detail.value;
    const category = this.data.categories[index].value;
    
    this.setData({
      searchCategoryIndex: index,
      searchCategory: category
    });
  },
  
  // 选择价格区间
  bindPriceRangeChange(e) {
    const index = e.detail.value;
    
    this.setData({
      priceRangeIndex: index,
      priceRange: this.data.priceRanges[index]
    });
  },
  
  // 重置搜索条件
  resetSearch() {
    this.setData({
      searchKeyword: '',
      searchCategory: '',
      searchCategoryIndex: -1,
      priceRange: '',
      priceRangeIndex: -1
    });
    
    // 重新加载商品列表
    this.loadProductList();
  },
  
  // 加载商品列表（模拟从服务器获取）
  loadProductList() {
    // 这里可以替换为实际的API调用
    const defaultProducts = [
      { id: 1, name: 'Java编程思想', price: 35, category: 'books', condition: 'likeNew' },
      { id: 2, name: 'MacBook Pro', price: 4800, category: 'electronics', condition: 'good' },
      { id: 3, name: '山地自行车', price: 280, category: 'daily', condition: 'likeNew' },
      { id: 4, name: '篮球', price: 120, category: 'sports', condition: 'new' },
      { id: 5, name: '运动鞋', price: 230, category: 'clothing', condition: 'likeNew' }
    ];
    
    this.setData({
      products: defaultProducts
    });
  },
  
  doSearch() {
    // 获取搜索条件
    const { searchKeyword, searchCategory, priceRange } = this.data;
    
    // 如果没有任何搜索条件，则重新加载所有商品
    if (!searchKeyword && !searchCategory && (!priceRange || this.data.priceRangeIndex === 0)) {
      this.loadProductList();
      return;
    }
    
    // 模拟搜索
    util.showLoading('搜索中...');
    
    // 模拟服务器查询
    setTimeout(() => {
      // 加载默认商品列表作为搜索基础
      this.loadProductList();
      
      // 过滤商品数据
      let filteredProducts = this.data.products;
      
      // 按关键词过滤
      if (searchKeyword) {
        filteredProducts = filteredProducts.filter(item => 
          item.name.indexOf(searchKeyword) >= 0);
      }
      
      // 按分类过滤
      if (searchCategory) {
        filteredProducts = filteredProducts.filter(item => 
          item.category === searchCategory);
      }
      
      // 按价格区间过滤
      if (priceRange && priceRange.min !== undefined && this.data.priceRangeIndex > 0) {
        filteredProducts = filteredProducts.filter(item => 
          item.price >= priceRange.min && item.price <= priceRange.max);
      }
      
      // 更新商品列表
      this.setData({
        products: filteredProducts
      });
      
      util.hideLoading();
      
      // 显示搜索结果提示
      util.showToast(`找到 ${filteredProducts.length} 个商品`);
    }, 500);
  },
  
  // 初始化截止时间选择器
  initEndTimePicker() {
    const date = new Date();
    const hours = [];
    const minutes = [];
    const days = [];
    
    // 未来15天
    for (let i = 0; i < 15; i++) {
      const futureDate = new Date(date.getTime() + i * 24 * 60 * 60 * 1000);
      const month = futureDate.getMonth() + 1;
      const day = futureDate.getDate();
      days.push(`${month}月${day}日`);
    }
    
    // 小时
    for (let i = 0; i < 24; i++) {
      hours.push(i < 10 ? `0${i}` : `${i}`);
    }
    
    // 分钟
    for (let i = 0; i < 60; i += 5) {
      minutes.push(i < 10 ? `0${i}` : `${i}`);
    }
    
    this.setData({
      endTimeArray: [days, hours, minutes],
      endTimeIndex: [0, date.getHours(), Math.floor(date.getMinutes() / 5)]
    });
  }
}) 